package com.hifar.test.report.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hifar.test.api.model.ReportApiResultVO;
import com.hifar.test.report.pojo.HfEnvReport;
import com.hifar.test.report.pojo.VO.HfEnvReportVO;
import com.hifar.test.report.pojo.VO.ReportApproveVO;
import com.hifar.test.report.pojo.VO.ReportCreateVO;
import com.hifar.test.report.pojo.VO.ReportPushVO;

import java.util.List;

/**
 * @author zhuWeiWei
 * @description: 环境报告
 * @date 2024/12/26 13:45
 */
public interface IHfEnvReportService extends IService<HfEnvReport> {
    /**
     * 提交报告审批
     *
     * @param id 报告id
     */
    void submitReport(String id);

    /**
     * 审核通过报告
     *
     * @param reportApproveVO 报告审核信息
     */
    void examinePass(ReportApproveVO reportApproveVO);

    /**
     * 审核驳回报告
     *
     * @param reportApproveVO 报告审核信息
     */
    void examineReject(ReportApproveVO reportApproveVO);

    /**
     * 批准通过报告
     *
     * @param reportApproveVO 报告审核信息
     */
    void approvePass(ReportApproveVO reportApproveVO);

    /**
     * 批准驳回报告
     *
     * @param reportApproveVO 报告审核信息
     */
    void approveReject(ReportApproveVO reportApproveVO);

    /**
     * 生成报告
     *
     * @param reportCreateVO 生成VO
     */
    void generateReport(ReportCreateVO reportCreateVO);

    /**
     * 报告列表
     *
     * @param page
     * @param queryWrapper
     * @return
     */
    Page<HfEnvReportVO> pageVO(Page page, QueryWrapper<HfEnvReportVO> queryWrapper);

    /**
     * 根据委托id查询报告
     *
     * @param id 委托id
     * @return
     */
    List<HfEnvReport> listByEntrustId(String id);

    /**
     * 替换报告
     *
     * @param id
     * @param fileId
     * @return
     */
    HfEnvReport replaceReport(String id, String fileId);

    /**
     * 根据工控委托id 设置委托id
     * @param gkEntrustId   工控委托id
     * @param entrustId     委托id
     */
    void updateEntrustId(String gkEntrustId, String entrustId);

    /**
     * 推送报告到指定系统
     *
     * @param reportPushVO
     */
    void pushReport(ReportPushVO reportPushVO);

    /**
     * api接口查询报告列表
     *
     * @param page
     * @param queryWrapper
     * @return
     */
    Page<ReportApiResultVO> pageApiVO(Page page, QueryWrapper<ReportApiResultVO> queryWrapper);
}
